package com.剑指offer.第五章;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

/**
 * 给定一个组单词，请将他们按照位词分组，例如：输入一组单词["eat","aet","tea","bat,"nat"]
 * 分别["eat","aet","tea"] ["bat"] ["nat"]
 */
public class 变位词组 {

    /**
     * 可以将每个字符串排序，这样排序之后就相同了，然后使用哈希表存储
     *
     * @param str
     * @return
     */
    public static List<List<String>> resolve(String[] str) {
        HashMap<String, List<String>> counts = new HashMap<>();
        /**
         *
         */
        for (String s : str) {
            char[] chars = s.toCharArray();
            Arrays.sort(chars);
            String newStr = new String(chars);
            // putIfAbsent如果不存则添加key value 如果存在则不添加，返回value
            counts.putIfAbsent(newStr, new ArrayList<>());
//            List<String> list = counts.get(newStr);
//            if (list == null) {
//                list = new ArrayList<>();
//            }
            counts.get(newStr).add(s);
        }

        return new ArrayList<>(counts.values());
    }

    public static void main(String[] args) {

    }

}
